             Aide en ligne pour ALGED Algebra Editor

Copyright (c) 1994,1996 John Henckel

L'autorisation d'utiliser, copier, modifier, distribuer et vendre ce
logiciel et sa documentation pour n'importe quelle raison que ce soit
est accordée gratuitement sous réserve que la présente notice de
copyright apparaisse sur chaque copie et qu'elle apparaisse aussi en
même temps que cette notice d'autorisation dans la documentation de
support.  Tous les programmes contenus ici sont livrés "tels quels".
 Les garanties implicites de vente et d'adaptation pour un usage
particulier sont expressément exclues.

----------------------------------------------------------------------------

Je m'appelle John Henckel (internet:  henckel@vnet.ibm.com).  Je suis
un passionné de micro; J'aime écrire des programmes pour m'amuser
et ALGED est l'un d'entre eux.  Je recommande aussi mon programme
simulateur de collision en 2D "Impact" que l'on trouve sur Internet
dans http://www.coast.net/SimTel/msdos/simulatn.html
 Merci à ma famille de me laisser travailler sur ce sujet.  Merci à mon
manager à IBM Rochester Minnesota de me permettre d'offrir ce
programme gratuitement au public.

Alged est un programme pour résoudre des problèmes d'algèbre.
 Il y a d'autres programmes qui peuvent effectuer des manipulations
de formules symboliques, par exemple MathCad ou Mathematica.

 Les avantages d'Alged sont :
    * C'est gratuit ! Le source des programmes est gratuit aussi !
    * Peu de ressources demandées ( il tourne sur un PC/XT de 256 Mb)
    * Facile à utiliser, idéal pour l'éducation
    * Graphiques en 2D et 3D rapides et faciles à mettre en oeuvre.
    * Peut être personnalisé et traduit dans d'autres langues. (versions
      en flamand et en français incluses)

Bien sûr, il existe des limites.  Alged n'a rien d'un programme "commercial"
(pourtant, j'ai vu pire !) Alged ne traite pas les matrices, les séries, les
intégrales, les dérivées ou les transformations transcendentales.
Les nombres imaginaires ne sont supportés que pour les cinq opérations
de base (addition, soustraction, multiplication, division et exponentiation).

Alged est un outil pur les mathématiques symboliques, aussi j'ai
volontairement évité les algorithmes qui font appel à la puissance
du micro pour faire du "number crunching".

Vous pouvez consulter le fichier alged.doc pour un apprentissage rapide du
produit.
----------------------------------------------------------------------------
Instructions pour l'entrée des données.

 L'écran Alged possède un menu en haut et une zone de travail en bas.
En bas à gauche, l'heure est indiquée, et le pourcentage de mémoire utilisée.
(Quand la mémoire atteint les 100%, Alged s'arrête.)
 On manipule les formules dans la zone de travail en cliquant sur des parties
d'entre elles puis en cliquant sur une fonction dans le menu.
 On clique sur le bouton gauche de la souris dans la zone de travail pour
sélectionner l'expression courante, appelée PRISE. La Prise est
mise en double brillance.
 On clique sur le bouton droit de la souris dans la zone de travail pour
sélectionner l'expression CLE. La Clé est copiée au bas de l'écran. Noter
qu'il est possible de cliquer sur la Clé au bas de l'écran, de sorte que la
Prise peut être une sous-entité de la Clé.
 Pour se déplacer dans la zone de travail, on peut cliquer sur la bordure
 du bas de l'écran.

Si votre micro n'a pas de souris, (ou si vous avez décidé de ne pas vous en
servir, utiliser les touches [Page Haut], [Page Bas] et [Fin] pour sélectionner
la Prise.  Ces touches descendent dans l'arbre hiérarchique du fichier stocké
en mémoire.  On peut copier la Prise vers la Clé en tapant '.' .  On peut
lister la Clé en tapant 'k'.  On peut copier la Clé sur la zone de travail en
tapant la touche [Inser].  On peut annuler la Clé en tapant sur [Entrée].  Pour
se déplacer dans la zone de travail, on peut utiliser les touches avec des
flèches.

Quelques opérations sur le menu utilisent seulement la Prise, d'autres
utilisent à la fois la Prise et la Clé.  A moins d'une autre explication, les
descriptions du menu ci dessus s'appliquent uniquement à la Prise.

Les opérations sur les polynômes, telles que PolyFact ou PolyDiv ne
requierent pas la spécification de la Clé. Si aucune Clé n'est spécifiée,
ces fonctions utiliseront la variable 'x' ou la premiere variable
rencontrée dans l'expression .  Si la prise est une équation, les
opérations polynomiales sélecteront automatiquement un côté ou l'autre de
l'équation.

----------------------------------------------------------------------------
Description du Menu :

Simplifie [barre d'espace] : simplifie l'expression. Cette fonction trie
l'expression, combine les termes communs, calcule les nombres et la réécrit
sous forme canonique.
  Note : Une fonction similaire est SimpStep qui est assignée à la touche de
fonction 'x'. La fonction SimpStep montre les étapes intermédiaires de la
simplification.

Distribue [d] distribue la multiplication sur les additions et les
soustractions et distribue les exposants sur la multiplication et la division.

  Note: Une autre fonction similaire est DistChild qui est assignée au
caractère 'D' (appuyer sur Maj et 'd'). La fonction DistChild est différente
pour deux raisons.
    1. DistChild fait une distribution du haut vers le bas. Par exemple,
           (x*(a + b))^2  --->  (x^2)*(a + b)^2    avec  DistChild
           (x*(a + b))^2  --->  (x*a + x*b)^2      avec  Distribue
    2. DistChild ne distribue pas les facteurs majeurs dans une expression
ou une équation. On peut utiliser DistChild pour simplifier le resultat
d'une mise en facteurs, comme FactPoly ou FactQuad.

Calcule [c] calcule tous les nombres ex: 3*2 => 6.

FactPrem [v] trouve la mise en facteurs premiers de nombres entiers.  (Ceci est
est limité par l'option ?d du fichier de personnalisation Alged.1st)

Entiers [i] convertit les nombres réels en entiers, si possible.  ex : 1.5 =>
3/2 Cet algorithme a deux stratégies différentes.  Tout d'abord, il cherche
des séquences répétitives dans la partie fractionnaire du nombre.  Au moins
deux chiffres répétés doivent être significatifs.  Si cela ne marche pas, il
cherche un nombre entier, d, tel que d*x soit un entier.  Les paramètres
utilisateurs ?e et ?d du fichier Alged.1st sont utilisés ici.

Associe [a] permute les éléments dans un groupe associatif.

Déno-Comm [m] Est une fonction à bascule pour créer un dénominateur commun ou
pour distribuer la division sur les additions et les soustractions.

Mode Car  [8] Bascule les codes ascii 7 bits vers 8 bits ou vice-versa.
Ceci est pratique si l'on utilise l'impression d'écran.

Coef-Poly [p] collecte les coefficients d'un polynôme.  La Prise doit
être un polynôme (pas une équation) et la Clé doit être l'expression
utilisée comme base du polynôme.
ex. Prise : a*x + b*x + c, Clé : x ==> le resultat est c + (a + b)*x

Centrer [home] centre horizontalement les formules (valeur par défaut).

Div-Poly [\] division polynomiale. La Prise doit être une division (pas
une équation) et le numérateur doit être un polynôme de degré supérieur
ou égal à celui du dénominateur. La Clé doit être la variable de base.
ex: Prise : (x^2 - y^2)/(x - y) et Clé : x. ==> Le résultat est x + y.

FactQuad [q] Met en facteurs un polynôme de degré 2 en utilisant l'équation
quadratique. La Prise doit être un polynôme de degré 2 et non une équation. La
Clé doit être la variable de base.
ex:  Prise : (x^2 - y^2) et  Clé :  x. ==> Le résultat est (x + y)(x - y).

FactCubic [3] Met en facteurs un polynôme de degré 3 en utilisant l'équation
cubique.  La Prise doit être un polynôme de degré 3 (pas une équation) La Clé
doit être la variable de base.
ex:  Prise : (x^3 - y^3) et Clé : x. ==> Résultat (après Entiers et
plusieurs fonctions Calcule et Simplifie ) :
         (x - y)*(x + (0.5 - 0.86i)*y)*(x + (0.5 + 0.86i)*y).

  Note:  Cette fonction ne marche pas très bien. Elle donne parfois une
  réponse fausse et parfois utilise toute la mémoire. Le problème se rencontre
  avec des racines non singulières. N'utilisez cette fonction qu'en dernier
  ressort.

Fact-Poly [f] Met en facteurs un polynôme en utilisant les racines
rationnelles.  La Prise doit être un polynôme (pas une équation).  La Clé doit
être la variable de base.
Ex : Prise : (x^4 - y^4) et Clé :   x.  ==> Résultat :
                     (x - y)(x + y)(x^2 + y^2).

Substitue [u] Réalise la substitution basée sur la Clé appliquée sur la Prise.
La Clé doit être une équation.
Ex : Prise :  a*x + b  et Clé  : x = y - 1
  ==> Résultat :  a*(y - 1) + b.

  Notes: Le type de la Clé peut être une expression, mais on peut avoir
  besoin de changer l'association sur la Prise de façon à faire fonctionner
  la substitution. On peut réaliser ceci avec la fonction Egal-Clé : Pour
  remplacer la Prise par la Clé, taper =u.

^N Etend [n] étend les exposants entiers Ex : x^3 ==> x*x*x

JointExp [j] joint les  exposants de la base commune. Ceci est la
fonction inverse de Distribue pour les exposants.

Egal-Clé [=] Change la Clé en une équation en utilisant la Prise.
Ni la Prise ni la Clé ne doivent être une équation avant cette opération.
 Ex : Prise : x + y, Clé : z ==> Clé résultante x + y = z

  Note: On peut utiliser  = et u pour remplacer la Prise par la Clé.

Add-Clé [+] ajoute la Clé à la Prise.
     Notes   Si la Prise est une équation, la Clé est ajoutée
     aux deux côtés. Si la Clé est une équation, les côtés correspondants
     sont ajoutés à la Prise. Si la Prise ou la Clé ne sont pas une équation,
     la Clé est à la fois ajoutée et retranchée à la Prise.
     Ex :  Prise : x, Clé : y ==> résultat : x + y - y.

Sub-Clé [-] soustrait la Clé à la Prise.  Voir notes sur Add-Clé.

Mult-Clé [*] multiplie la Prise par la Clé.  Voir notes on Add-Clé.

Div-Clé [/] divise la Prise par la Clé.  Voir notes sur Add-Clé.

Exp-Clé [e] Monte la Prise à la puissance Clé. Voir notes sur Add-Clé.

EffaceDeb [suppr] Efface l'expression en haut de l'écran.

EntrerClé [k] demande la saisie d'une nouvelle Clé.  On doit taper la Clé
et appuyer sur F6 Entrée quand on a terminé.
(La touche de fonction F6 peut produire un ^Z, mais si cela ne fonctionne
pas, on peut alors appuyer sur ctrl-z.). On peut utiliser soit une notation
"infix" soit "postfix" en fonction de l'option ?f du fichier alged.1st.

  Exemple "Infix" z = (x^2 + y^2)^.5.

  Exemple "Postfix"  z x 2 ^ y 2 ^ + .5 ^ =.
  On ne peut pas utiliser de parenthèses. Les symboles doivent être
séparés par des blancs.

  Note:  On peut utiliser EntrerClé pour taper tout ce qui peut exister
  dans un fichier de données (extension .ae). Ceci s'applique aussi aux
  commentaires visibles (") et aux options utilisateurs telles que ?m 41.
  (Exception: on ne peut pas changer les drivers bgi avec ?g, mais on peut
  changer le mode ou la palette de couleurs). L'option ?f ne prend pas
  effet avant la fin du fichier.
  Utiliser la fonction InsèreClé pour ajouter la nouvelle Clé à l'expression.

InsèreClé [Inser] Copie la Clé à la liste des expressions en cours.

EffacTout [Alt-e] efface toutes les expressions de la zone de travail
(sauf la Clé)

DebugMode [Alt-d] Vide la liste arborescente de la Prise à des fins de
corrections du programme.

Charge [l] Charge d'autres expressions à partir d'un fichier.
 Note: Les expressions en cours ne sont pas effacées.

Sauve [s] Sauvegarde la liste des expressions sur un fichier. La Clé
n'est pas sauvegardée.

Ecrit [w] Ecrit la liste des expressions en notation "postfix". Cette
fonction n'est pas très utile sauf si vous aimez la notation "postfix".
Je l'ai laissée parce qu'elle se trouvait déjà dans alged version 2.1.

EgalDroit ']' Déplace l'opérande de droite depuis la partie gauche d'une
équation vers la partie droite.
Exemple: Si la Prise est x + y = 3, le résultat est x = 3 - y.

EgalGauch '[' Déplace l'opérande de gauche depuis la partie gauche d'une
équation vers la partie droite.
Exemple: Si la Prise est x + y = 3, le résultat est y = x + 3.

Graph [g] Passe l'écran en mode graphique et trace la fonction.
 Appuyer sur F1 pour avoir l'aide en ligne sur les touches de fonction en
mode graphique.
 Pour utiliser les graphiques, il faut un adaptateur vidéo CGA, EGA, VGA ou
Hercules et on doit avoir le fichier bgi correspondant (par ex EGAVGA.BGI)
dans le répertoire courant. Alged détecte automatiquement le mode voulu
parmi les quatre cités. S vous voulez utiliser un autre fichier bgi, indiquez
le avec l'option ?g du fichier alged.1st.

-----------------------------------------------------------------------------
Commentaires généraux.

Si vous appréciez Alged ou avez des suggestions, envoyez moi un message sous
Internet. Je ne demande pas d'argent, mais j'aime recevoir des messages !

Quand on démarre Alged à partir de la ligne de commande DOS, on peut
spécifier un ou plusieurs fichiers de données à charger. Alged charge
toujours en premier le fichier ALGED.1ST. Il est donc conseillé de mettre
dans ce fichier les options de personnalisation pour Alged, mais on peut
aussi y mettredes formules mathématiques. Voir le fichier ALGED.1ST pour
avoir la liste des options de personnalisation utilisées par Alged.
Alged utilise le mode vidéo courant; si on désire le changer, il faut
taper par exemple MODE co80,43 (le driver ANSI.SYS peut être nécessaire
pour cette commande).

L'algorithme de visualisation utilisé par ALGED n'est pas parfait; par
exemple, dans l'expression :
               1       2
              ----    y
                2  + ----
               x      b

les barres de fractions devraient être sur la même ligne. On peut les
y forcer en sélectionnant l'option ?y=0 dans le fichier ALGED.1ST, mais cela
entraîne d'autres conséquences qui peuvent être gênantes.

Quand on clique sur une expression avec la souris, la façon de le faire
est évidente. Il existe une exception pour les exponentielles.
Pour cliquer sur une exponentielle, pointer la souris juste au dessus du
coin en haut à droite et cliquer.
Par exemple, dans
                                            2
                                     (x + y)

pointer juste au dessus de ')' et cliquer.

Vous remarquerez, en haut à gauche du menu les fonctions 'Simplifie' et
'Distribue'. Ces opérations sont très pratiques pour réduire une longue
expression compliquée. Après une division polynomiale ('Div Poly') par
exemple, j'exécute alternativement 'Distribue' et 'Simplifie' jusqu'à
ce que plus rien ne change.

Ce programme ne supporte pas directement les opérateurs négatifs; c'est
pourquoi, au lieu de taper -x, on doit taper -1*x.
Il ne supporte pas non plus les racines; ainsi, pour dire sqrt(x), on devra
écrire x^0.5

Toutes les valeurs numériques sont stockées sous forme de nombres à
virgule flottante sur 8 octets selon la norme IEEE (double précision).
Ceci autorise à avoir des nombres à 16 digits avec un exposant entre
-307 et +307.
Alged ne délivre que 15 digits, car le dernier n'est souvent pas juste.
Ceci amène parfois à des situations où des nombres qui apparaissent comme des
entiers n'en sont pas en fait. Par exemple, on peut voir 1*x et, quand on
le simplifie avec 'Simplifie', cela ne change pas la valeur de x. Pour
corriger cela, utiliser la fonction 'Entiers', et les digits erronés
sont éliminés. Un petit mot de précaution : si votre problème utilise de
très petits nombres, tels que 1.23e-10, il ne faut pas utiliser la fonction
'Entiers' qui retirerait tous les chiffres significatifs.
Les symboles spéciaux suivants sont reconnus :
      pi = 3.14159265358979292
      e =  2.71828182845904509

Alged permet d'utiliser toute fonction ayant jusqu'à 5 arguments.
Cependant, seules les fonctions suivantes sont reconnues dans les
calculs et dans les graphiques :
  Avec un argument :
                    sin, cos, tan, acos, asin, atan, cosh, sinh,
                    tanh, ln (base e), log (base 10), abs, rand, sign.
  Avec deux arguments :
                        min, max, r, mod, atan2.
Les fonctions trigonométriques sont en radians. La fonction r(x,y) utilise
la fonction 'hypot' en C qui est égale à (x^2 + y^2)^0.5 qui est l'hypoténuse.
La fonction atan2(y,x) est l'angle (en radians, de -pi à pi) de la ligne
joignant (x,y) à l'origine.

Les noms des variables peuvent aller jusqu'à 24 caractères. Par contre, le
nom des fonctions est limité à 7 caractères. Ceci est du au fait que les
pointeurs des paramètres utilisent une partie de la mémoire.

La variable spéciale "i" est reconnue comme la racine carrée de -1.
De la sorte, i*i est simplifié en -1. De même, i^7.3 devient -1*i^1.3.

Les nombres imaginaires sont supportés dans les exponentielles, (1+2i)^3
est évalué comme
2.24^3*(cos(1.11*3) + i*sin(1.11*3)) soit -11-2i.  J'ai utilisé la
convention dans laquelle -pi<theta<=pi. Les nombres imaginaires ne sont pas
calculés dans des fonctions comme sin(3*i)

Les deux fonctions 'Calcule' et 'Simplifie' calculent des résultats
numériques. Toutefois, la différence est que 'Simplifie' n'essaiera pas
de faire le calcul sur des nombres entiers dont le résultat conduirait
un nombre non entier. Par exemple, 4^0.5 n'est pas traité par 'Simplifie'
mais l'est par 'Calcule'.

Quelques fonctions sur les polynômes ne marchent pas tant que l'expression
n'a pas été d'abord complètement distribuée et simplifiée.

Vous pouvez vous exercer avec 'Associe et 'Coef Poly'. Ces opérations
sont utiles dans de nombreux cas. 'Associe' va réarranger les
additions / soustractions  ou les multiplications / divisions, ou =,
en fonction de ce qui est sélecté à ce moment là.

La fonction 'Fact-Poly' peut être très longue à exécuter. Sur un 486DX-33,
la mise en facteurs d'un polynôme du 4ème degré peut prendre 15 secondes.
En général, je dois admettre que je n'ai pas essayé d'optimiser les
performances d'Alged. C'était déjà assez difficile de faire le programme.

Personnalisation :

Le menu d'Alged et les autres messages du programme sont stockés dans le
fichier ALGEDFRA.MNU (pour la version française). On peut le personnaliser
en utilisant un programme éditeur de texte. On peut changer la taille et
la disposition du menu, les touches de fonctions, ou n'importe quelle
partie du texte. On peut traduire ce fichier dans une autre langue (ce
qui a été fait pour la version française). Si vous le faites, renvoyez moi
la version traduite pour que je puisse la distribuer !
Quand Alged démarre, il charge en mémoire le fichier ALGEDxyz.MNU à
partir du répertoire en cours, où xyz est la valeur indiquée pour le
langage et spécifiée dans le paramètre ?l du fichier ALGED.1ST.

Notes finales :

Une dernière note sur la fiabilité. Ce programme a été mis à la disposition
de tous comme le résultat d'un développement pour le plaisir et n'est
pas fiable. Vous devrez vérifier les réponses en refaisant si possible
l'opération à l'envers. Vous devrez sauvegarder souvent votre travail
pour éviter tout problème. Quand j'ai développé ce programme, il m'est
souvent arrivé de bloquer le système. Je n'avais plus qu'à remettre la
machine sous tension pour la faire repartir ! Soyez prudents, surtout
sur des opérations très longues telles  que 'Fact-Poly'.

"Voici ce que dit le Seigneur :'Ne laissez pas l'homme sage se vanter de sa
sagesse ou l'homme fort se vanter de sa force, ou l'homme riche se vanter
de ses richesses, mais faites que celui qui se vante, se vante de ceci :
qu'il soit celui qui me comprend et me connaît, que je suis le Seigneur,
qui suis la bonté, la justice et la droiture sur terre, car c'est là ma
joie,' dit le Seigneur." Jérémie 9.23-24

Fin du texte de l'aide.  Appuyer sur n'importe quelle touche pour revenir
